package Test;

import junit.framework.TestCase;

import CtrLayer.ProduktCtr;
import DataLayer.Model.Produkt;

public class testProduktCtr extends TestCase
{
	private ProduktCtr pCtr;
	private Produkt produkt;

	public void setUp() throws Exception
	{
		pCtr = new ProduktCtr();
		produkt = new Produkt("40K Test", "Star tank", true, 250, true);
	}

	public void tearDown() throws Exception
	{
		pCtr = null;
		produkt = null;
	}

	public void testProduktController()
	{
		try
		{
			createProdukt();
			Produkt dbProd = getProdukt(produkt.getType());
			assertEquals(produkt.getModel(), dbProd.getModel());
			assertEquals(produkt.isDirectOnly(), dbProd.isDirectOnly());
			assertEquals(produkt.getPris(), dbProd.getPris());
			assertEquals(produkt.isSynlig(), dbProd.isSynlig());
			int rc = deleteProdukt(dbProd);
			assertEquals(1, rc);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	private void createProdukt() throws Exception
	{
		pCtr.createProdukt(
				produkt.getType(), produkt.getModel(), produkt.isDirectOnly(), produkt.getPris(),
				produkt.isSynlig());
		System.out.println("#1 Produktet " + produkt.getModel() + " blev oprettet");
	}

	private Produkt getProdukt(String type)
	{
		Produkt tmpProd = null;
		for (Produkt p : pCtr.getAllProdukt(produkt.isSynlig()))
		{
			if (p.getType().equals(type))
			{
				tmpProd = p;
				System.out.println("#2 Produktet " + p.getModel() + " blev fundet");
			}
		}
		return tmpProd;
	}

	private int deleteProdukt(Produkt p)
	{
		int rowcount = -1;
		rowcount = pCtr.deleteProdukt(p);
		System.out.println("#3 Produktet " + p.getModel() + " blev slettet");
		return rowcount;
	}
}
